package edu.yang.dbutils.result;

import edu.yang.dbutils.ResultSetHandler;
import edu.yang.dbutils.RowProcessor;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author yang
 * @date 2024-05-11
 */
public class ColumnHandler<T> implements ResultSetHandler<T> {
    /**
     * 列下标
     */
    private Integer columnIndex;
    /**
     * 列名
     */
    private String columnName;

    /**
     * 构造函数
     * @param columnIndex 列下标
     */
    public ColumnHandler(Integer columnIndex) {
        this.columnIndex = columnIndex;
    }

    /**
     * 构造函数
     * @param columnName 列名
     */
    public ColumnHandler(String columnName) {
        this.columnName = columnName;
    }

    /**
     * 根据列名或下标查询结果
     * @param rs 结果集对象
     * @return
     * @throws SQLException
     */
    @Override
    public T handle(ResultSet rs) throws SQLException {
        if (rs.next()){
            if (columnIndex != null){
                return (T)RowProcessor.toValue(rs, columnIndex);
            }
            return (T) RowProcessor.toValue(rs, columnName);
        }
        return null;
    }

}
